/**
Author: Maciej Oczko
Date: November 2011
*/

#ifndef TESTSUITE_H_
#define TESTSUITE_H_

#include <iostream>
#include <vector>

typedef void (*testFunction)(void);

class TestSuite
{
private:
	/// The tests vector.
	std::vector<testFunction> m_testsVector;
	TestSuite(const TestSuite &);
	TestSuite & operator=(const TestSuite &);
public:
	TestSuite();
	TestSuite(std::vector<testFunction> & p_testsVector);
	~TestSuite();
	/// Adds tests to tests vector.
	inline void AddTests(testFunction p_testFunction) { m_testsVector.push_back(p_testFunction); };
	/// Clears the tests vector.
	inline void ClearTests() { m_testsVector.clear(); };
	/// Runs all tests.
	void run();
};

#endif